Providing power to a mobile device using a flash drive

ABSTRACT

A method and apparatus to provide electrical current to a mobile device using a flash drive is disclosed. The flash drive can be connected to two devices, a source device and a mobile device, and can be used to transfer power from the source device to the mobile device to, for example, charge a battery of the mobile device. The flash drive can also be used to transfer data between the two devices. For example, the flash drive can be connected to the source device, which can copy, e.g., a movie to the flash drive. The mobile device can be connected to the flash drive, and the movie can be copied or streamed to the mobile device. A user can watch the movie using the mobile device while the mobile device is using power from the source device to charge a battery of the mobile device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/602,220, entitled “PROVIDING POWER TO A MOBILE DEVICE USING A FLASHDRIVE”, and filed on Jan. 21, 2015, the contents of which isincorporated herein by reference in its entirety. U.S. patentapplication Ser. No. 14/602,220 further claims the benefit of U.S.Provisional Patent Application No. 62/039,366, entitled “PROVIDING POWERTO A MOBILE DEVICE USING A FLASH DRIVE”, and filed on Aug. 19, 2014, thecontents of which is incorporated herein by reference in its entirety.

BACKGROUND

Flash drives are devices that contain flash memory, which is anon-volatile memory, and that can be connected to computing devices,such as personal computers, smartphones, tablet computers, etc., via astandard connector. After connecting a flash drive to a first computingdevice via a standard interface, such as to a desktop computer via afull size Universal Serial Bus (USB) connector, a user can transfer datafrom the desktop computer to the flash drive using a set of standardprotocols, such as for a USB mass storage device class. Because the datais stored in the non-volatile flash memory, the flash drive retains thedata even when not connected to any computing device and not receivingany power. The flash drive can be connected to a second computing devicethat has the same standard connector and supports the same protocols,such as a laptop computer with a full size USB connector, and the datacan be transferred from the flash memory of the flash drive to thelaptop computer.

SUMMARY

Introduced herein is technology for providing electrical current to amobile device using a flash drive to, for example, charge a rechargeablebattery of the mobile device. Mobile devices, such as smart phones,tablet computers, etc., often have rechargeable batteries that need tobe periodically recharged. Mobile devices are often recharged byconnecting the mobile device to a power source using a data cable thathas connectors on both ends.

In one example, a smartphone with a micro-USB interface can be rechargedusing a data cable with a micro-USB connector on one end, and a fullsize USB connector on the other end. The micro-USB connector of the datacable is plugged into the micro-USB connector of the smart phone, andthe full size USB connector of the data cable is plugged into a USBpower source, such as a USB connector of a laptop or desktop computer,or a USB power adapter that is plugged into a household electricaloutlet. Electrical current (also referred to as “current”) flows fromthe USB power source to the smart phone via the data cable, and can beused to charge a rechargeable battery of the smart phone. However, somepeople think that carrying the data cable is an inconvenience. Ifcarried in a pocket or purse, the data cable adds to the clutter of thepocket or purse in which it is carried, which may frustrate some people.

Many people also carry flash drives in their pocket or purse, forexample, to backup data, to transfer or synchronize data betweendevices, etc. In one embodiment, a flash drive has two connectors, suchas a full size USB connector and a micro-USB connector. The flash drivecan be connected to a device with a compatible connector. If the devicealso supports a protocol that is supported by the flash drive, the flashdrive can be used to backup data, to transfer or synchronize databetween devices, etc. The flash drive can also be used to, e.g.,transfer or synchronize data between devices with different connectors,as long as the connectors are compatible with the flash drive and thedevices support a communication protocol that is supported by the flashdrive. For example, the flash drive can be connected via the full sizeUSB connector to a laptop computer, a movie can be copied from thelaptop computer to the flash drive using a USB protocol, the flash drivecan be connected via the micro-USB connector to a smart phone, and themovie can be streamed or copied from the flash drive to the smart phonefor viewing.

Further, when connected to both devices at the same time, the flashdrive can be used to pass power from one of the devices to the otherdevice to, e.g., charge the other device. For example, when the flashdrive is connected to both the laptop computer and the smart phone, theflash drive can pass power from the laptop computer to the smart phone,such as by passing current from the laptop computer to the smart phone.The current can be used to power the smart phone, to charge arechargeable battery of the smart phone, etc.

In some embodiments, the flash drive includes a power management modulethat manages the power flow. The power management module can communicatewith, e.g., the laptop computer via the USB connector to determine howmuch power the USB connector of the laptop can provide. It can furthercommunicate with, e.g., the smart phone via the micro-USB connector todetermine how much power the smart phone will consume via the powerprovided via the micro-USB connector. For example, the power managementmodule can communicate with the smart phone to determine one or morepossible power consumption levels, and to set the power consumption ofthe smart phone to a level that is compatible with the amount of powerthat the laptop can provide, given that some power will also be consumedby the flash drive itself.

BRIEF DESCRIPTION OF THE DRAWINGS

One or more embodiments are illustrated by way of example in the figuresof the accompanying drawings, in which like references indicate similarelements.

FIG. 1 is an environment diagram illustrating an environment in which aflash drive is used, consistent with various embodiments.

FIG. 2 is a block diagram illustrating an example of a flash drive thatutilizes two controller modules for two sets of functionality,consistent with various embodiments.

FIG. 3 is a block diagram illustrating an example of a flash drive thatintegrates the two sets of functionality using one controller module,consistent with various embodiments.

FIG. 4 is a block diagram illustrating an example of a flash drive thatintegrates the two sets of functionality via customization of the ICdesign of a storage controller, consistent with various embodiments.

FIG. 5 is an activity diagram illustrating the use of a flash drive tocopy data from a non-iPhone Operating System (iOS) computing device toan iOS computing device, consistent with various embodiments.

FIG. 6 is a block diagram illustrating an example of a flash drive withtwo controller modules that enables current to be passed from a sourcedevice to a mobile device, consistent with various embodiments.

FIG. 7 is a block diagram illustrating an example of a flash drive withan integrated controller module that enables current to be passed from asource device to a mobile device, consistent with various embodiments.

FIG. 8 is a block diagram illustrating an example of a flash drive witha power management module that enables current to be passed from asource device to a mobile device, consistent with various embodiments.

FIG. 9 is an activity diagram illustrating the use of a flash drive topass current from a source device to a mobile device, consistent withvarious embodiments.

FIG. 10 is a diagram illustrating a space that is formed between a smartphone and a user's hand when the user holds the smart phone, consistentwith various embodiments.

FIG. 11 is a diagram illustrating a user's pinky finger being placed onthe bottom edge of a smart phone to stabilize the smart phone,consistent with various embodiments.

FIG. 12 is a diagram illustrating a flash drive that is shaped toutilize the space behind a mobile device, consistent with variousembodiments, and as viewed from three different angles.

FIG. 13 is a diagram illustrating a front-view of a flash drive that isconnected to a smart phone and is utilizing the space behind the smartphone, consistent with various embodiments.

FIG. 14 is a diagram illustrating a side-view of a flash drive that isconnected to a smart phone and is utilizing the space behind the smartphone, consistent with various embodiments.

FIG. 15 is a diagram illustrating a back-view of a flash drive that isconnected to a smart phone and is utilizing the space behind the smartphone, consistent with various embodiments.

FIG. 16 is a diagram illustrating a bottom-view of a flash driveutilizing the space between a smart phone and a user's hand, consistentwith various embodiments.

FIG. 17 is a diagram illustrating a front-view of a flash driveutilizing the space between the smart phone and the user's hand,consistent with various embodiments.

FIG. 18 is a diagram illustrating a flash drive with one connector thatis shaped to utilize the space behind a mobile device, consistent withvarious embodiments, and as viewed from two different angles.

FIG. 19 is a diagram illustrating a flash drive that can bend toaccommodate mobile devices of varying thicknesses, consistent withvarious embodiments.

FIG. 20 is a diagram illustrating an exploded view of a flash drive,including a cap, that is shaped to utilize the space behind a mobiledevice, consistent with various embodiments.

FIG. 21 is a block diagram illustrating an example of a processingsystem in which at least some operations described herein can beimplemented, consistent with various embodiments.

DETAILED DESCRIPTION

In this description, references to “an embodiment,” “one embodiment,”“an implementation,” or the like, mean that the particular feature,function, structure or characteristic being described is included in atleast one embodiment of the technique introduced here. Occurrences ofsuch phrases in this specification do not necessarily all refer to thesame embodiment. On the other hand, the embodiments referred to also arenot necessarily mutually exclusive. Additionally, the term “module”refers broadly to software, hardware, or firmware (or any combinationthereof) components. Modules are typically functional components thatcan generate useful data or other output using specified input(s). Amodule may or may not be self-contained. An application program (alsocalled an “application”) may include one or more modules, or a modulecan include one or more application programs.

Further, the term “cause” and variations thereof refer to either directcausation or indirect causation. For example, a computer system can“cause” an action by sending a message to a second computer system inorder to command, request, or prompt the second computer system toperform the action. Any number of intermediary devices may examineand/or relay the message during this process. In this regard, a devicecan “cause” an action even though it may not be known to the devicewhether the action will ultimately be executed.

Additionally, a protocol, such as the USB protocol, may include any of aset of protocols, may include any of various versions of the protocols,may include any of various classes of devices, etc., as would beappreciated by a person of ordinary skill in the art. For example, theUSB protocol may include any of the USB mass storage device class, theUSB human interface device class, etc., may include any of USB version1.0, USB version 2.0, USB version 3.0, etc. Further, supporting theprotocol may include supporting only a portion of the protocol. Forexample, supporting the protocol may include supporting only a portionof the set of protocols, only a portion of the various versions of theprotocol, only a portion of the classes of devices, etc., or evensupporting only a portion of one of the set of protocols.

FIG. 1 is an environment diagram illustrating an environment in which aflash drive is used, consistent with various embodiments. In theembodiment of environment 100, user 105 has flash drive 110 and desiresto transfer data from laptop 115 to smartphone 120. In this embodiment,laptop 115 runs the Microsoft Windows operating system (Windows),includes a standard full size USB port, and supports the USB protocol.In various embodiments, laptop 115 and/or smartphone 120 can be anycomputer system that runs an operating system that supports a USB massstorage protocol, such as Android, iOS, MacOS, OS X, Unix, HP-UX,Solaris, BSD, Linux, etc. The operating system can be a real-timeoperating system, such as LynxOS, RTLinux, VxWorks, Windows CE,FreeRTOS, etc. Returning to the embodiment of FIG. 1, user 105 can plugUSB connector 125 into the USB port of laptop 115. Once connected,laptop 115 recognizes flash drive 110 as a USB device, and establishescommunication. User 105, using the Windows interface, initiates a copycommand to copy some data, such as a movie, from the hard disk of laptop115 to flash drive 110.

After the movie is copied to the flash drive, user 105 removes USBconnector 125 from the USB port of laptop 115, and plugs Lightningconnector 130, which is a standard Apple Computer™ (Apple) connector,into smartphone 120, which is an Apple device that runs iOS. Onceconnected, smartphone 120 recognizes flash drive 110 as an Applecompatible device, and establishes communication. User 105, using theiOS interface, initiates a copy command to copy the movie from flashdrive 125 to smartphone 120.

FIG. 2 is a block diagram illustrating an example of a flash drive thatutilizes two controller modules for two sets of functionality,consistent with various embodiments. Flash drive 200 includes firstconnector 205, second connector 210, mux 215, latch 220, Security IC225, iOS interface controller 230, storage controller 235, and flashmemory 240. Storage controller 235 is utilized for a first set offunctionality that includes handling the USB protocol and managingcommunication with flash memory 240. iOS interface controller 230 isutilized for a second set of functionality that includes Apple iOSspecific processing and communicating with a security IC or module. Inthe embodiment of FIG. 2, first connector 205, second connector 210, mux215, latch 220, Security IC 225, iOS interface controller 230, storagecontroller 235, and flash memory 240 are each separate components thatare connected to a printed circuit board (PCB, not shown), and the PCBelectrically connects the connection points, also referred to as pins,of the various components. Further, Security IC 225, iOS interfacecontroller 230, storage controller 235, and flash memory 240 are eachintegrated circuits (ICs). While 225-240 are separate ICs in thisembodiment, in other embodiments, any and/or all of 225-240, as well asmux 215 and latch 220, can be integrated into one or more ICs.

In the embodiment of FIG. 2, first connector 205 is a standard Appleconnector, such as an Apple Lightning connector, an Apple 30-pinconnector, or an Apple Thunderbolt connector, and can be used to connectto a computing device that runs iOS. Second connector 210 is a standardconnector for a non-iOS computing device (i.e. a computing devicerunning an operating system other than any version of iOS), such as afull size USB connector, a standard USB connector, a standard A-type USBconnector, a B-type USB connector, a mini USB connector, a mini USBA-type connector, a mini USB B-type connector, a micro USB connector, amicro USB A-type connector, a micro USB B-type connector, or a UC-E6connector. Second connector 210 can be used to connect to a non-iOScomputing device, and, in some embodiments, can be used to connect to acomputing device that runs iOS. A standard connector can be an abovedescribed standard Apple connector, or an above described standardconnector for a non-iOS computing device, or any other industry standardconnector. In various embodiments, first connector 205 is a first typeof standard connector, and second connector 210 is a second type ofstandard connector.

Returning to the example of FIG. 1, Lightning connector 130 can be firstconnector 205, and USB connector 125 can be second connector 210. Usingthe example of FIG. 1, user 105 can plug second connector 210 into theUSB port of laptop 115. Once connected, a power pin of second connector210 is electrically connected to the 5.5V power supply of laptop 115,and the power pin transmits the 5.5V to latch 220.

At this point, the power pins of first connector 205 are unconnected.Latch 220, which can be a cross-coupled NAND latch, detects that the5.5V power pin from second connector 210 is active, and that the 3.3Vpower pin from first connector 205 is inactive. Latch 220 is set to asecond value to indicate that second connector 210 is active (i.e. toindicate that reads and writes of the flash drive will go through thisconnector). The output of latch 220 is electrically connected to theselect input of mux 215, and when the select input is set to the secondvalue, the mux selects the data pins of second connector 210 to send toiOS interface controller 230. The output of latch 220 is alsoelectrically connected to iOS interface controller 230 and storagecontroller 235. When the output of latch 220 is set to the second value,iOS interface controller 230 and storage controller 235 can sample theoutput of latch 220 to determine whether second connector 210 is active.

Components 215-240 can be powered by the appropriate power supply pin(e.g. the 3.3V power pin of first connector 205, the 5.5V power pin ofsecond connector 210, by a combination of the two power pins, by adifferent power pin of first connector 205 or second connector 210,etc.). Once components 215-240 are powered up, the components go througha reset sequence, which initializes the components and begins theexecution of an application program that is stored in flash memory 240to effectively “boot” the flash drive into a ready state.

At some point after the flash drive is in the ready state, laptop 115sends a USB protocol message to flash drive 200 to initiatecommunication. The USB protocol message passes through mux 215 to iOSinterface controller 230, which relates the USB protocol message tostorage controller 235. Storage controller 235 is configured, viacustomization of the IC design of storage controller 235, and/or viasoftware that storage controller 235 executes, to communicate using theUSB protocol. Storage controller 235 receives and recognizes the USBcommands, and acts accordingly to establish a communication channelbetween laptop 115 and flash drive 200. User 105, using the Windowsinterface, initiates a copy command to copy some data, such as a movie,from the hard disk of laptop 115 to flash drive 110. Laptop 115,utilizing a series of USB commands, sends the movie via second connector210 and mux 215 to iOS interface controller 230, which forwards the datato storage controller 235, which acts according to the USB commands andwrites the movie to flash memory 240.

Storage controller 235 is also configured, via customization of the ICdesign of storage controller 235, and/or via software that storagecontroller 235 executes, to manage communications with flash memory 240.Storage controller 235 can be a module that is optimized to managecommunications with a flash memory, which includes managing the readingof data from, the writing of data to, and the erasing of data at theflash memory. Managing communications with a flash memory can requirecertain capabilities, such as the ability to manage the data of theflash memory in order to properly handle “erase blocks.” Flash memory,such as flash memory 240, can be NAND or NOR flash, and can have “eraseblocks”, an erase block being the smallest unit of flash memory that canbe erased at a time. Erase blocks are substantially larger than thesmallest unit of memory that can be read or written. For example, NANDflash memory can be read or written in a random access fashion in unitstypically sized in the range of 2 KB to 4 KB. However, an erase blockmay be on the order of 128 KB or 256 KB or even larger.

As a result, when getting ready to erase data or commands from flashmemory 240, storage controller 235 needs to be capable of ensuring thatonly data that is intended to be erased is actually erased. Storagecontroller 235 can ensure this by managing the data so that the eraseblock of flash memory 240 to be erased contains exclusively data to beerased. Storage controller 235 can also ensure this by reading the dataor commands that are in the erase block to be erased, but are notintended to be erased, and storing the data or commands in temporarystorage memory, which can be part of storage controller 235 or can bepart of another module. Storage controller 235 can then safely erase theerase block containing the mix of to be erased and not to be eraseddata/commands. Once the erase block is erased, the data/commands thatare not intended to be erased can be read from temporary storage memoryand written back to flash memory 240.

After the movie is copied to flash drive 200, user 105 unplugs flashdrive 200 from laptop 115. At this point there is no power connected toany of components 205-240. However, being a non-volatile memory, flashmemory 240 retains the data that was written to it.

Later, first connector 205 is connected to smartphone 120 and the powerpin of first connector 205 is electrically connected to the 3.3V powersupply of smartphone 120. At this point, the power pins of secondconnector 210 are unconnected. Latch 220 detects that the 3.3V power pinfrom first connector 205 is active, and that the 5.5V power pin fromsecond connector 210 is inactive, and latch 220 is set to a first valueto indicate that first connector 205 is active. Mux 215, based on themux select being set to the first value, selects the data pins of firstconnector 205 to send to iOS interface controller 230. iOS interfacecontroller 230 and storage controller 235, based on the output of latch220, can determine whether first connector 205 is active. The flashdrive “boots” as previously described. At some point after the flashdrive is in the ready state, smartphone 120 sends a Peripheral Protocolmessage to flash drive 200 to initiate communication.

A Peripheral Protocol is a protocol and/or set of commands that enablesa peripheral device, such as flash drive 200, to communicate with an iOSdevice. An iOS device is a computing device that runs any version ofiOS. Even when two devices have physically compatible connectors, thetwo devices may not be compatible, for example, due to incompatiblecommunication protocols. For example, while an Apple computing devicerunning iOS may have a full size USB connector, the Apple computingdevice may have an incompatible communication protocol. When a userplugs the flash drive into the full size USB connector of the Applecomputing device, the Apple computing device may display a messagestating that the flash drive is an unrecognized or unsupported device.This may be because the Apple computing device doesn't recognize devicesthat support only the mass storage class USB protocols, even though thedevice is connected via a standard USB connector.

As a result of having incompatible communication protocols, the flashdrive cannot be used to send data to or obtain data from theincompatible Apple computing device, even though the flash drive and theApple computing device can be connected via a physically compatibleconnector. In such a case, the Apple computing device may require thatthe peripheral device support the Peripheral Protocol in addition to theUSB mass storage class protocols. The Peripheral Protocol can be, forexample, an Apple proprietary peripheral protocol, details of which maybe available under Apple's MFi licensing program. Examples of PeripheralProtocols include the accessory protocols referred to in U.S. Pat. No.8,590,036 entitled “Method and system for authenticating an accessory,”which was filed on Jan. 10, 2012.

To be compatible with a peripheral device, the Apple computing devicecan further require that the peripheral device support an authenticationscheme that requires the peripheral to include a Security IC, such assecurity IC 225. A Security IC is an IC that can receive a message froma computing device, such as an iOS device, and can provide a response tothe computing device, enabling the computing device to authenticate theperipheral device that includes the Security IC.

Returning to the example, the Peripheral Protocol message passes throughmux 215 to iOS interface controller 230. iOS interface controller 230 isconfigured, via customization of the IC design of iOS interfacecontroller 230, and/or via software that iOS interface controller 230executes, to communicate using the Peripheral Protocol. iOS interfacecontroller 230 receives and recognizes the Peripheral Protocol commands.In order to establish a communication channel with an Apple iOS device,such as smartphone 120, flash drive 200 can be authorized by smartphone120. Smartphone 120 sends a message to initiate the authorizationprocess, in response to which iOS controller 130 communicates withSecurity IC 225 to obtain authentication data. Security IC 225 sends theauthentication data to iOS interface controller 230, which forwards theauthentication data to smartphone 120 to authorize the flash drive andenable data transfers between the flash drive and smartphone 120.

User 105, using the iOS interface, initiates a copy command to copy themovie from flash drive 200 to smartphone 120. Smartphone 120, utilizinga series of commands, which can include either USB commands, which arehandled by storage controller 235, or Peripheral Protocol commands,which are handled by iOS interface controller 230, or both USB andPeripheral Protocol commands, initiates the copy of the movie. Storagecontroller 235 reads the movie from flash memory 240 and sends the movieto iOS interface controller 230, which forwards the movie via mux 215and first connector 205, to smartphone 120.

FIG. 3 is a block diagram illustrating an example of a flash drive thatintegrates the two sets of functionality using one controller module,consistent with various embodiments. Flash drive 300 includes firstconnector 205, second connector 210, mux 215, latch 220, Security IC225, storage controller 335, and flash memory 240. In some embodiments,storage controller 335 is the same as, or has the same functionality as,storage controller 235. Storage controller 335 is utilized for a firstset of functionality that includes handling the USB protocol andmanaging communication with flash memory 240, as well as for a secondset of functionality that includes Apple iOS specific processing andcommunicating with a Security IC. The second set of functionality was,in the embodiment of FIG. 2, handled by iOS interface controller 230,which is notably not included in flash drive 300. In variousembodiments, the first set of functionality includes handling acommunication protocol other than the USB protocol, and managingcommunication with flash memory 240. The second set of functionalityincludes handling a communication protocol, such as an Apple peripheralprotocol, and communicating with a Security IC

In the embodiment of FIG. 3, first connector 205, second connector 210,mux 215, latch 220, Security IC 225, storage controller 335, and flashmemory 240 are each separate components that are connected to a PCB (notshown), and the PCB electrically connects the pins of the variouscomponents. Further, Security IC 225, storage controller 335, and flashmemory 240 are each integrated circuits (ICs). While Security IC 225,storage controller 335, and flash memory 240 are separate ICs in thisembodiment, in other embodiments, any and/or all of Security IC 225,storage controller 335, and flash memory 240, as well as mux 215 andlatch 220, can be integrated into one or more ICs.

Once again referring to the example of FIG. 1, flash drive 300 wouldhandle copying the movie from laptop 115, and sending the movie tosmartphone 120, in a way similar to flash drive 200, with some notabledifferences that are the result of or that enable integrating the twosets of functionality using storage processor 335. The processing thatis handled by iOS interface controller 230 and storage controller 235 ofFIG. 2 can be handled by storage controller 335 of FIG. 3. As wasstorage controller 235 in the example of FIG. 2, storage controller 335is configured, via customization of the IC design of storage controller335, and/or via software that storage controller 335 executes, tocommunicate using the USB protocol, as well as to manage communicationswith flash memory 240. Unlike storage controller 235 in the example ofFIG. 2, storage controller 335 is also configured, via customization ofthe IC design of storage controller 335, and/or via software thatstorage controller 335 executes, to communicate using the PeripheralProtocol and to communicate with Security IC 225. When storagecontroller 335 is configured via software and not via customization ofthe IC design of storage controller 335, storage controller 335 can bethe same as or have the same functionality as storage controller 235.

FIG. 4 is a block diagram illustrating an example of a flash drive thatintegrates the two sets of functionality via customization of the ICdesign of a storage controller, consistent with various embodiments.Flash drive 400 includes first connector 205, second connector 210, mux215, latch 220, Security IC 225, storage controller 335, flash interfacecontroller 405, temporary storage memory 410, USB/PP/SIC controller 415,and flash memory 240. In some embodiments, storage controller 435 is thesame as, or has the same functionality as, storage controller 335 ofFIG. 3.

In the embodiment of FIG. 4, storage controller 435 is utilized for afirst set of functionality that includes handling the USB protocol andmanaging communication with flash memory 240, as well as for a secondset of functionality that includes Apple iOS specific processing andcommunicating with a Security IC. A sub-module of storage controller435, flash interface controller 405, manages communication with flashmemory 240, and a second sub-module of storage controller 435,USB/PP/SIC controller 415, handles the USB protocol, Apple iOS specificprocessing, and communicating with the Security IC.

While FIG. 4 illustrates the two sets of functionality being integratedvia customization of the IC design of a storage controller, thefunctionality can equivalently be integrated via customized softwarethat is executed by a programmable IC, such as a microcontroller orapplication specific integrated circuit (ASIC), or via a combination ofa customized IC design and customized software. Also referred to asmodules, the blocks of the customized IC of FIG. 4 can have equivalentmodules in customized software when the functionality is integrated viathe customized software.

Once again referring to the example of FIG. 1, flash drive 400 of theembodiment of FIG. 4 would handle copying the movie from laptop 115, andsending the movie to smartphone 120, in a way that can be similar to orthe same as flash drive 300 of FIG. 3. After flash drive 400 isconnected to laptop 115 and is in the ready state, the movie copy can beinitiated by laptop 115 sending a message, such as a USB protocolmessage, to flash drive 400 to initiate communication and to send thefirst data of the movie. The first data can pass through secondconnector 210 and mux 215 to storage controller 435, where it passes tosub-module USB/PP/SIC controller 415. When USB/PP/SIC controller 415receives the first data, it can store the first data in temporarystorage memory 410B, to which it is connected.

Flash memory can be read or written in a random access fashion in unitstypically sized in the range of 2 KB to 4 KB, sometimes called blocks.The first data being copied from laptop 115 can be stored in temporarystorage memory 410B until sufficient movie and/or other data has beenreceived to trigger a write of a block of flash memory 240. The firstdata can alternately or additionally be sent to flash interfacecontroller 405, where it can be stored in temporary storage memory 410Auntil sufficient movie and/or other data has been received to trigger awrite of a block of flash memory 240.

Once sufficient data has been received to trigger a write, the temporarystorage memory storing the movie and/or other data can be read and thedata to be written to the block of flash memory 240 can be sent to flashinterface controller 405. Flash interface controller 405 can write thedata to the block of flash memory 240. Once the data is written to flashmemory 240, the corresponding memory of the temporary storage memoryholding the data can be made available for other purposes. Additionally,commands that are sent by laptop 115, such as USB commands, can also bestored in temporary storage memory 410B until USB/PP/SIC controller 415is able to handle them appropriately.

After being disconnected from laptop 115, and connected to smartphone120, flash drive 400 can send the movie to smartphone 120. The moviedata to be sent resides in flash memory 240. At some point after theflash drive is in the ready state, smartphone 120 sends an PeripheralProtocol message to flash drive 400 to initiate communication. ThePeripheral Protocol message passes through first connector 205 and mux215 to storage controller 435, where the message passes to sub-moduleUSB/PP/SIC controller 415. USB/PP/SIC controller 415 receives thePeripheral Protocol commands and can send the commands to temporarystorage memory 410B until USB/PP/SIC controller 415 is ready to handlethe commands.

As part of establishing a communication channel with flash drive 400,smartphone 120 sends a message to flash drive 400 to initiate anauthorization process, in response to which USB/PP/SIC controller 415communicates with Security IC 225 to obtain authentication data.Security IC 225 sends the authentication data to USB/PP/SIC controller415, which forwards the authentication data to smartphone 120 toauthorize flash drive 400 and enable data transfers between flash drive400 and smartphone 120. In some embodiments, USB/PP/SIC controller 415processes the authentication data before sending a message based on theprocessing of the authentication data to smartphone 120 to supportauthorization of flash drive 400 and enable data transfers between flashdrive 400 and smartphone 120.

User 105, using the iOS interface, initiates a copy command to copy themovie from flash drive 400 to smartphone 120. Smartphone 120, utilizinga series of commands which can include either USB commands or PeripheralProtocol commands, both of which are handled by USB/PP/SIC controller415, initiates the copy of the movie. USB/PP/SIC controller 415 sends amessage to flash interface controller 405, in response to which flashinterface controller 405 reads the movie from flash memory 240 and sendsthe movie to USB/PP/SIC controller 415, which forwards the movie via mux215 and first connector 205, to smartphone 120.

In some embodiments, flash interface controller 405 can read the moviedata to be sent from flash memory 240 and store the data in temporarystorage memory 410A. Flash interface controller 405 can alternately, oradditionally, send the movie data to USB/PP/SIC controller 415, whichcan store the movie data to be sent in temporary storage memory 410B.Once USB/PP/SIC controller 415 is ready to send the movie data tosmartphone 120, it can read the movie data from temporary storage memory410B and send the movie data to smartphone 120, or can receive the moviedata directly from flash interface controller 405 and send the moviedata to smartphone 120. Additionally, commands that are to be sent canbe stored in temporary storage memory 410B until USB/PP/SIC controller415 is ready to send the commands to the connected device.

Flash interface controller 405 can also manage the erasing of flashmemory 240. As discussed earlier, flash memory has “erase blocks”, anerase block being the smallest unit of flash memory that can be erasedat a time. Erase blocks are substantially larger than the smallest unitof memory that can be read or written. For example, NAND flash memorycan be read or written in a random access fashion in units typicallysized in the range of 2 KB to 4 KB. However, an erase block may be onthe order of 128 KB or 256 KB or even larger. As a result, when gettingready to erase data or commands from flash memory 240, a controller thatmanages communication with a flash drive, such as flash interfacecontroller 405, should ensure that only data that is intended to beerased is actually erased. Flash interface controller 405 can ensurethis by managing the data so that the erase block of flash memory 240that is to be erased exclusively contains data to be erased. Flashinterface controller 405 can also ensure this by reading the data orcommands that are in the erase block to be erased, but are not intendedto be erased, and by storing the data or commands in temporary storagememory 410B. Flash interface controller 405 can then safely erase theerase block containing the mix of to be erased and not to be eraseddata/commands. Once the erase block is erased, the data/commands thatare not intended to be erased can be read from temporary storage memory410B and written back to flash memory 240.

Those skilled in the art will appreciate that the logic illustrated inFIGS. 1-4 and described above, and in the activity diagram discussedbelow, may be altered in a various ways. For example, the order of thelogic may be rearranged, substeps may be performed in parallel,illustrated logic may be omitted, other logic may be included, etc.Further, the scope of the disclosed technique also includes embodimentsimplementing the described functionality in these various other ways.Accordingly, the scope of the disclosed technique is intended to embraceall such alternatives, modifications, and variations as fall within thescope of the claims, together with all equivalents thereof.

FIG. 5 is an activity diagram illustrating the use of flash drive 400 tocopy data from non-iOS computing device 505 (NCD 505) to iOS computingdevice 510 (ICD 510), consistent with various embodiments. NCD 505 is acomputing device that is not running iOS, such as laptop 115, and ICD510 is a computing device that is running iOS, such as smartphone 120.While this diagram illustrates using flash drive 400 to copy data fromNCD 505 to ICD 510, data can similarly be copied from ICD 510 to NCD 505using flash drive 400.

A user, such as user 105, plugs a connector of flash drive 400, such asa male USB connector, into a compatible connector of NCD 505, such as afemale USB connector. After being plugged in, flash drive 400 powers upand goes through a reset sequence where it in initialized and put in aready state. In some embodiments, during the initialization processflash drive 400 reads and executes software from flash memory 240. Forexample, after going through the reset sequence, flash interfacecontroller 405 reads data from flash memory 240. The data can besoftware to be executed by either flash interface controller 405 orUSB/PP/SIC controller 415. The software can be executed to put flashdrive 400 into a ready state.

Once flash drive 400 is in the ready state, either flash drive 400 orNCD 505 can initiate communication between the two devices. In responseto being plugged into the USB connector of NCD 505 and effectively“booting” to the ready state, flash drive 400 can determine a protocolto use to send a message to NCD 505 to initiate communication betweenthe devices (step 518). For example, flash drive 400 can determine,based on being plugged into a USB connector, to send a USB command ormessage to NCD 505 to initiate communication (step 520). In response toreceiving the USB command or message, NCD 505 can send a response toestablish communication between the devices (step 512). In someembodiments or cases, NCD 505 can send the message to initiatecommunication to flash drive 400, and flash drive 400 can send aresponse to establish communication.

At some point in time, user 105 indicates that he wants to copy data,such as a movie, from NCD 505 to flash drive 400. For example, user 105can utilize a user interface of a non-iOS operating system that isrunning on NCD 505, such as the Windows operating system running onlaptop 115, to indicate to copy the movie to flash drive 400 (step 514).NCD 505 can send the movie to flash drive 400 using the USB protocol andUSB protocol commands (step 516). Flash drive 400 receives the commandsat USB/PP/SIC controller 415, where the USB commands are interpreted.Based on the received USB commands, USB/PP/SIC controller 415 determinesto write the movie data to flash memory 240 (step 522), and can forwardthe movie data to flash interface controller 405, which manages thewriting of the data to flash memory 240 (step 524). After the movie datais written to flash drive 400, user 105 unplugs flash drive 400 from theUSB connector of NCD 505.

At a later point in time, user 105 plugs a connector of flash drive 400,such as a male Lightning connector, into a compatible connector of NCD510, such as a female Lightning connector. After being plugged in, flashdrive 400 powers up and goes through a reset sequence; in which it isinitialized and put in a ready state. Once flash drive 400 is in theready state, either flash drive 400 or NCD 510 can initiatecommunication between the two devices. In response to being plugged intothe Lightning connector of NCD 510 and effectively “booting” to theready state, flash drive 400 can determine a protocol to use to send amessage to NCD 510 to initiate communication between the devices (step526). For example, flash drive 400 can determine, based on being pluggedinto a Lightning connector, to send a Peripheral Protocol command ormessage to NCD 510 to initiate communication (step 528). In response toreceiving the Peripheral Protocol command or message, NCD 510 can send aPeripheral Protocol message to authenticate flash drive 400 (step 538).

Upon receiving the Peripheral Protocol message, flash drive 400determines that a device authentication has been initiated (step 530).The Peripheral Protocol message is received by USB/PP/SIC controller415, where the Peripheral Protocol commands are interpreted. USB/PP/SICcontroller 415 determines that an authentication has been initiated(step 530), and USB/PP/SIC controller 415 sends a message to Security IC225 to obtain authentication data. Security IC 225 sends theauthentication data to USB/PP/SIC controller 415, which forwards theauthentication data to NCD510 (step 532) to authorize flash drive 400 toenable data transfers between flash drive 400 and NCD 510. In someembodiments, USB/PP/SIC controller 415 processes the authentication databefore sending transformed data to NCD 510 to authorize flash drive 400.After receiving the authorization data (or, in some embodiments, thetransformed data), NCD 510 uses the authentication data to validate thatflash drive 400 is an authorized device. Once authorized, NCD 510 sendsa response to establish communication with flash drive 400 (step 540).

At a later point in time, user 105 indicates that he wants to copy orstream the movie from flash drive 400 to ICD 510. For example, user 105utilizes a user interface of the iOS that is running on ICD 510, such assmartphone 120, to indicate to copy or stream the movie from flash drive400 to ICD 510 (step 542). In response to the indication to copy orstream the movie, ICD 510 sends a request for the movie to flash drive400 (step 544) by sending, e.g., a USB command requesting movie data toflash drive 400, where the command is directed to USB/PP/SIC controller415, where the USB command is interpreted. Based on the received USBcommand, USB/PP/SIC controller 415 determines to read the movie datafrom flash memory 240 (step 534), and forwards the read request to flashinterface controller 405, which manages the reading of the movie datafrom flash memory 240. After reading the movie data from flash memory240, flash interface controller 405 sends or streams the movie data toUSB/PP/SIC controller 415, which sends or streams the data to ICD 510(step 536), where the data is received (step 546).

In some embodiments where storage controller 435 is configured, viasoftware that storage controller 435 executes, to integrate the variousfunctionality that is implemented on iOS interface controller 230 andstorage controller 235 of FIG. 2, a number of issues make successfulintegration challenging. For example, storage controller 435 may be thesame as or have the same functionality as storage controller 235, whichis not utilized (in the embodiment of FIG. 2) to handle PeripheralProtocol communication, nor to handle communications with Security IC225. Further, when handling data transfer in software at the datatransfer application level, the data transfer application may not benotified of error detection made at a lower level, such as by USB levelcommands, and/or the error detection may not be visible to the datatransfer application. As a result, implementing these functions viasoftware that is executed by storage controller 435 may be quitechallenging. For example, storage controller 435 may not have theperformance capacity needed to handle streaming a movie to a computingdevice for display on the computing device, or may not be able toproperly handle errors that occur during transmission of the data.

To overcome a performance limitation, in some embodiments, a ConnectedPeripheral (CP) channel can be logically created in order to enable theuse of Small Computer System Interface (SCSI) commands. A CP channel isa communication channel between two components that enables the twocomponents to communicate using a protocol and/or commands beyond thoseof the Peripheral Protocol. For example, to overcome performancelimitations of using a module not designed to implement the PeripheralProtocol, such as storage controller 435, a CP channel can beimplemented in order to enable Small Computer System Interface (SCSI)commands to be used. Storage controller 435, being designed for datastorage applications, supports SCSI commands, which are not supported bythe Peripheral Protocol. By setting up a CP channel, these much higherperformance SCSI commands can be used to speed up the data transfer byas much as an order of magnitude, as compared to executing the datatransfer using only the protocol and/or commands of the PeripheralProtocol.

To implement the CP channel, storage controller 435 can be configured tocreate two USB end points to use for the CP channel, one logically atflash drive 400 and a second at ICD 510. Once established, the CPchannel can be used to send data using commands other than USB commands.For example, storage controller 235 may be designed and optimized forstorage applications, and may support high performance data transfercommands, such as SCSI commands. The CP channel can be used to transferthe movie data from flash drive 400 to ICD 510, and/or from ICD 510 toflash drive 400, using SCSI commands. By utilizing SCSI commands, datatransfer rates may be increased by an order of magnitude or even more.

To overcome an issue caused by a data transfer application that handlesdata transfer to/from flash drive 400 not being notified of transmissionerrors, or the transmission errors not being visible to the datatransfer application, these errors can be detected at the data transferapplication level. For example, the USB protocol can include a cyclicredundancy checksum (CRC), which can be checked at the USB protocollevel. If an error is detected by the CRC, because this error isdetected at a lower level than the data transfer application, the datatransfer application may not be notified of the error, and/or the errormay not be visible to the data transfer application. Examples of otherstandard USB error detection mechanisms include detection of an invalidProduct ID (PID) sequence, detection of a missed packed, detection of atoken packet without a corresponding detection of a data packet thatcorresponds to the token packet within a bus transaction timeout period,etc. Other standard USB error detection mechanisms can be those calledfor by a USB specification, such as the USB 1.0, 1.1, 2.0, 3.0, 3.1,etc. versions of the USB specification.

To address this issue, in some embodiments, a check to detect errorsthat would be detected by a standard USB error detection mechanism canbe implemented at the data transfer application level, and the errorscan be detected and fixed prior to being checked by the standard USBerror detection mechanism. By doing this, errors that would otherwise bedetected by a lower level USB error detections mechanism, such as theCRC, can be detected and addressed at the data transfer applicationlevel. Further, by fixing the data before the USB error detectionmechanism is utilized to detect errors, the data transfer applicationcan ensure that no errors are present that would otherwise be detectedby the USB error detection mechanism, and the issues related to errorsbeing detected at the lower level can be bypassed.

As one example of the error issue, iOS may not allow a storage device,such as flash drive 400, to be recognized as a storage device whenplugged into a connector, such as a Lightning connector. When flashdrive 400 is plugged into, for example, a computing device that runs theAndroid operating system (OS), flash drive 400 can be recognized as astorage device by the Android OS. As a result, much of the datatransmission can be handled by the file system of the Android OS. Insuch a case, when a CRC error is encountered during file transfer, lowerparts of the file system can properly handle the error. However, wheniOS does not allow flash drive 400 to be recognized as a storage device,the file system of the iOS cannot be used to handle data transmission.As a result, when an error such as a CRC error is encountered duringfile transfer, and with the file system software not available, theremay be no other software available to properly handle the error.

This problem can be solved by implementing a file system and includingthe file system with the data transfer application. When the iOS of ICD510 doesn't allow flash drive 400 to be recognized as a storage device,the data transfer application can utilize its own file system totransfer data. Errors such as those that would be detected and addressedby the file system of the iOS (in some cases in conjunction with theiOS) can, instead, be detected and addressed by the file system of thedata transfer application (in some cases in conjunction with the datatransfer application). The data transfer application software, as wellas the associated file system software, can be stored in flash memory240. Flash drive 400 can read the data transfer and file system softwarefrom flash memory 240, send the software to ICD 510, and cause thesoftware to be executed by ICD 510.

Without some form of protection, flash drive 400 could be damaged whenboth first connector 205 and second connector 210 are connected tocomputing devices. For example, the computing devices connected to thetwo connectors can attempt conflicting writes. This could result incorruption of the data in flash memory 240, or even physical damage toflash drive 400. To prevent this, in some embodiments flash drive 400includes protection circuitry to detect when both interfaces areconnected. This protection circuitry prevents any damage or malfunctionthat could result from both interfaces trying to simultaneously accessthe flash memory. Alternately, flash drive 400 can possess a physicalmechanism that prevents both connectors from being connected tocomputing devices at the same time.

As a second example, a first power supply of a first computing deviceconnected to first connector 205, and a second power supply of a secondcomputing device connected to second connector 210, can interact, e.g.,via a short circuit, and the interaction can damage a component coupledto either the first or the second power supplies. In some embodiments,flash drive 400 includes protection circuitry, that prevents the firstpower supply and the second power supply from electrically interactingto damage any component coupled to either the first or the second powersupplies, to prevent damage when each of the connectors of the flashdrive are connected to a different computing device.

In some embodiments, when both first connector 205 and second connector210 are connected to computing devices at the same time, storagecontroller 435 can further be configured to differentiate between afirst USB host that is logically at NCD 505, and a second USB host thatis logically at ICD 510. For example, storage controller 435 candifferentiate between the hosts based on the value storage in latch 220,or can differentiate between the hosts based on data that is receivedfrom the computing device to which flash drive 400 is connected. Thedata that is received can be, for example, descriptors, and storagecontroller 435 can differentiate between the hosts based on thedescriptors.

Further, flash drive 400 can determine with which of the two connectedcomputing devices to communicate. For example, flash drive 400 candetermine with which of the two connected computing devices tocommunicate based on the order that the two devices were connected tothe respective compatible connectors of flash drive 400, based on theorder that communication happens between flash drive 200 and each of thetwo computing devices, based on which of the two computing devicesindicates that communicating with that particular computing device ishigher priority, etc.

FIG. 6 is a block diagram illustrating an example of a flash drive withtwo controller modules that enables current to be passed from a sourcedevice to a mobile device, consistent with various embodiments. Flashdrive 600 includes first connector 205, second connector 210, flashmemory 240, interface controller 630, storage controller 635, powerswitches 650 and 655, fuse 660, transient voltage suppressor (TVS) 665,USB switch 670, host detect logic 675, and resistors 680 and 685. Flashdrive 600 can further include additional components. Interfacecontroller 630 can be iOS interface controller 230 of FIG. 2, as well asother implementations. Storage controller 635 can be storage controller235, as well as other implementations. USB switch 670 can be mux 215, aswell as other implementations. Host detect logic 675, which can be alogic module, can be latch 220, as well as other implementations. Insome embodiments, flash drive 600 includes security IC 225, which iscoupled to interface controller 635.

Storage controller 635 is utilized for a first set of functionality thatincludes handling the USB protocol and managing communication with flashmemory 240. In other embodiments, storage controller 635 handles otherprotocols for communicating with other devices, such as a PeripheralProtocol. Interface controller 630 is utilized for a second set offunctionality that includes interfacing with an external computingdevice, such as an Apple iOS device, a computer running a version of theWindows operating system, a mobile device running a version of theAndroid™ operating system, etc. In some embodiments, interfacecontroller 630 is further utilized to communicate with a security IC ormodule, such as Security IC 225.

In the embodiment of FIG. 6, first connector 205, second connector 210,flash memory 240, interface controller 630, storage controller 635,power switches 650 and 655, fuse 660, TVS 665, USB switch 670, hostdetect logic 675, and resistors 680 and 685 are each separate componentsthat are connected to a PCB (not shown), and the PCB electricallyconnects the pins of the various components to enable the components tocommunicate with each other. In various embodiments, any of flash memory240, interface controller 630, storage controller 635, power switches650 and 655, fuse 660, TVS 665, USB switch 670, host detect logic 675,or resistors 680 and 685 can be integrated to create one or morecomponents that integrate the functionality of these components, or canbe sub-divided to create multiple components that, combined, include thefunctionality of one or more of these components. Further, thesecomponents can be connected to multiple PCBs, with the multiple PCBscoupled together via wires or by another mechanism that enables thecomponents to communicate with each other.

Returning to the example of FIG. 1, flash drive 600 can be flash drive110, lightning connector 130 can be first connector 205, and USBconnector 125 can be second connector 210. Using the example of FIG. 1,user 105 can plug second connector 210 into a USB port of laptop 115.Once connected, a power pin of second connector 210 is electricallyconnected to the 5.5V power supply of laptop 115, and the power pintransmits the 5.5V to host detect logic 675.

At this point, no device is connected to first connector 205, and thepower pins of first connector 205 are unconnected. Host detect logic 675determines which device of devices that are connected to flash drive600, via first connector 205 or second connector 210, is the host deviceto which flash drive 600 communicates. In some embodiments, the hostdevice is a USB host, and flash drive 600 sends a message or signal tothe host device to establish the host device as the USB host. Subsequentcommunications between the host device and flash drive 600 can be basedon flash drive 600 being established as the USB host.

An output of host detect logic 675 controls USB switch 670, which is adata switch, to enable the host device to communicate with interfacecontroller 630 by configuring USB switch 670 to allow data to passbetween interface controller 630 and second connector 210. Anotheroutput of host detect logic 675, to identify which device is the hostand whether there are one or two devices connected to flash drive 600,is coupled to interface controller 630 and storage controller 635.

Host detect logic 675 can use any of various algorithms/mechanisms todetermine which device is the host when multiple devices are connectedto flash drive 600. In some embodiments, host detect logic 675determines which device is the host device based on which device wasfirst connected to and powered up flash drive 600. In other embodiments,host detect logic 675 sets, when two devices are connected to flashdrive 600, the host to the device connected to a prioritized connector.For example, when both first and second connectors 205 and 210 areconnected to devices, host detect logic 675 can determine that thedevice connected to second connector 210 is the host, even when flashdrive 600 was initially connected to a device via first connector 205,and the device was initially set as the host.

In the example of FIG. 6, host detect logic 675 determines the hostbased on a prioritization of the connectors, where a device connected tofirst connector 205 is determined to be the host when devices areconnected to both first and second connectors 205 and 210. Host detectlogic 675 detects that the 5.5V power pin from second connector 210 isactive, and that the 3.3V power pin from first connector 205 isinactive, and determines that the device connected to second connector210, which is laptop 115, is the host. Host detect logic 675 furtherdetermines that there is only one device connected to flash drive 600.The output of host detect logic 675 that controls USB switch 670 is setto a second value to indicate that the device connected to secondconnector 210 is the host. The output of host detect logic 675 iselectrically connected to the select input of USB switch 670. A secondoutput of host detect logic 675 is electrically connected to interfacecontroller 630 and storage controller 635, and is set to a value thatindicates both that the device connected to second connector 210 is thehost, and that flash drive 600 is connected to one device.

When the select input to USB switch 670 is set to the second value, USBswitch 670 enables the data pins of second connector 210 to be coupledto interface controller 630, such that data can be sent back and forthbetween laptop 115 and interface controller 630. The second output ofhost detect logic 675, which is connected to interface controller 630and storage controller 635, can be sampled by interface controller 630and storage controller 635 to determine that the device connected tosecond connector 210 is the host and that flash drive 600 is connectedto one device.

The various components of flash drive 600 can be powered by theappropriate power supply pin. Prior to flash drive 600 being connectedto any device, the voltage of the three nodes to which resistors 680 and685 are connected are all the same, so the voltage of the node betweenthe two resistors is the same as the voltage of the ground node to whichresistor 685 is connected. As second connector 210 is connected tolaptop 115, the 5.5V output of second connector 210 powers up andcurrent flows through resistors 680 and 685 to ground resulting in thevoltage of the node between the two resistors increasing relative to theground node. The node between the two resistors is connected to powerswitch 650, and sets the switch to an appropriate state.

When the 5.5V power is available, the voltage of the node between thetwo resistors increases, disabling power switch 650 and preventing 3.3Vpower from flowing from first connector 205 to interface controller 630,storage controller 635, or flash memory 240. Interface controller 630includes a power converter that generates 3.3V from the 5.5V powersupply. When the 5.5V power is available, interface controller 630supplies 3.3V power to storage controller 635 and flash memory 240. Whenthe 5.5V power of second connector 210 is not available, the voltage ofthe node between the two resistors is at ground, thereby enabling powerswitch 650 and enabling 3.3V power to flow from first connector 205 tointerface controller 630, storage controller 635, and flash memory 240.

Once flash drive 600 is powered up, the components go through a resetsequence, which initializes the components and begins the execution ofan application program that is stored in flash memory 240 to effectively“boot” the flash drive into a ready state. Related to this “boot”process, an enumeration process is initiated where flash drive 600 andlaptop 115 communicate to identify device type. In some embodiments,during the enumeration process, flash drive 600 and laptop 115communicate to determine an allowable amount of power for flash drive600 to draw from the USB port of laptop 115, and flash drive 600 limitsits power draw accordingly. Limiting its power draw can also includeflash drive 600 limiting the power draw of a second device that isconnected to the flash drive, and that can draw power from flash drive600.

At some point after flash drive 600 is in the ready state, laptop 115sends a USB protocol message to flash drive 600 to initiatecommunication. The USB protocol message passes through USB switch 670 tointerface controller 630, which relates the USB protocol message tostorage controller 635. Storage controller 635 is configured, viacustomization of the IC design of storage controller 635, and/or viasoftware that storage controller 635 executes, to communicate using theUSB protocol. Storage controller 635 receives and recognizes the USBcommands, and acts accordingly to establish a communication channelbetween laptop 115 and flash drive 600. User 105, using the Windowsinterface, initiates a copy command to copy some data, such as a movie,from laptop 115 to flash drive 600.

Laptop 115, utilizing a series of USB commands, sends the movie viasecond connector 210 and USB switch 670 to interface controller 630,which forwards the data to storage controller 635, which acts accordingto the USB commands and writes the movie to flash memory 240. Storagecontroller 635 is also configured, via customization of the IC design ofstorage controller 635, and/or via software that storage controller 635executes, to manage communications with flash memory 240, similar tostorage controller 235.

After the movie is copied to flash drive 600, user 105 plugs the flashdrive into smartphone 120, so that flash drive 600 is connected to bothlaptop 115 and smartphone 120. Host detect logic 675 determines thatboth the 3.3V power of first connector 205 and the 5.5V power of secondconnector 210 are active. Based on smartphone 120 being connected to theprioritized connector, which is first connector 205, the output of hostdetect logic 675 is set to a first value to indicate that the deviceconnected to first connector 205, which is smartphone 120, is the newhost device. As discussed above, in some embodiments, the host device isa USB host. Flash drive 600 can send a message or signal to the new hostdevice to establish the new host device as the USB host. Subsequentcommunications between the new host device and flash drive 600 can bebased on flash drive 600 being established as the new USB host.

USB switch 670, based on the switch select being set to the first value,enables the data pins of first connector 205 to be coupled to interfacecontroller 630, such that data can be sent back and forth betweensmartphone 120 and interface controller 630. The second output of hostdetect logic 675 that is connected to interface controller 630 andstorage controller 635 is set to a value that indicates both thatsmartphone 120 is the host, and that flash drive 600 is connected to twodevices.

Enumeration starts between flash drive 600 and smartphone 120 todetermine the device type. After enumeration, a communication channel isestablished between smartphone 120 and flash drive 600. Interfacecontroller 630 further determines, based on the value of the secondoutput of host detect logic 675, that flash drive 600 is connected totwo devices. Interface controller 630 controls the state of power switch655 with a select signal that is electrically connected to power switch655. By setting the select signal of power switch 655 to enable thepower switch, interface controller 630 enables power to flow from laptop115 through the 5.5V power signal of second connector 210 through fuse660 through power switch 655 through first connector 205 to smartphone120. Smartphone 120 can use this power in any of various ways, such asto power smartphone 120 or to charge a rechargeable battery ofsmartphone 120. Fuse 660 can be a resettable fuse. TVS 665 and fuse 660are used to help prevent damage from power supply over/under voltage tothe components of flash drive 600 and the devices that are connected toflash drive 600. If excessive current flows through fuse 660, the fusetrips and disables the power flow. Fuse 660 can be a resettable fuse.TVS 665 helps to protect against over/under voltage by clamping thevoltage to within a certain range.

In some embodiments, during the enumeration process, flash drive 600 andsmartphone 115 communicate to determine an allowable amount of power forsmartphone 120 to draw from flash drive 600. Flash drive 600 candetermine the power draw of smartphone 120 based on the amount of powerthat can be provided by the USB port of laptop 115 and based on thepower consumption of the components of flash drive 600. For example, iflaptop 115 can provide ten watts of power to flash drive 600, and thecomponents of flash drive 600 consume one watt, then flash drive 600should limit the power draw by smartphone 120 to nine watts or less. Ifsmartphone 120 can be set to draw either five watts or ten watts, flashdrive 600 can communicate with smartphone 120 to set the power draw offlash drive 600 to five watts (as setting the draw to ten watts wouldoverload the power that can be provided by laptop 115).

In some embodiments, such as an embodiment where flash drive 600includes a security IC such as Security IC 225, smartphone 120 can senda Peripheral Protocol message to flash drive 600 to initiatecommunication and authorize flash drive 600. The Peripheral Protocolmessage passes through USB switch 670 to interface controller 630.Interface controller 630 is configured, via customization of the ICdesign of interface controller 630, and/or via software that interfacecontroller 630 executes, to communicate using the Peripheral Protocol.Interface controller 630 receives and recognizes the Peripheral Protocolcommands. When smartphone 120 is Apple iOS device, flash drive 600 canbe authorized by smartphone 120. Smartphone 120 sends a message toinitiate the authorization process, in response to which interfacecontroller 630 communicates with the security IC to obtainauthentication data. The security IC sends the authentication data tointerface controller 630, which forwards the authentication data tosmartphone 120 to authorize the flash drive and enable data transfersbetween the flash drive and smartphone 120.

User 105 initiates a copy command to copy the movie from flash drive 600to smartphone 120. Smartphone 120, utilizing a series of commands, whichcan include either USB commands, which are handled by storage controller635, or Peripheral Protocol commands, which are handled by interfacecontroller 630, or both USB and Peripheral Protocol commands, begins thecopy process. Storage controller 635 reads the movie from flash memory240 and sends the movie to interface controller 630, which forwards themovie via USB switch 670 and first connector 205, to smartphone 120.

FIG. 7 is a block diagram illustrating an example of a flash drive withan integrated controller module that enables current to be passed from asource device to a mobile device, consistent with various embodiments.In the example of FIG. 7, flash drive 700 is the same as flash drive600, except that the functionality of interface controller 630 andstorage controller 635 have been integrated into interface/storagecontroller 730, which can be an IC. Further, flash drive 700 can be thesame as flash drive 300, and can be a different implementation.Interface/storage controller 730 can be the same as storage controller335, and can be a different implementation.

FIG. 8 is a block diagram illustrating an example of a flash drive witha power management module that enables current to be passed from asource device to a mobile device, consistent with various embodiments.In the example of FIG. 8, flash drive 800 can be the same as flash drive300, as well as flash drive 700, and can be a different implementation.Interface/storage controller 830 can be the same as interface/storagecontroller 730, as well as storage controller 335, and can be adifferent implementation. Host detect logic 875, which can be a logicmodule, can be the same as host detect logic 675, and can be a differentimplementation. Flash drive 800 includes several components/modules thatare not included in the illustration of FIG. 7, includinginterface/storage controller 830, host detect logic 875, USB switch 890,and USB power management 895. Flash drive 800 can further includeadditional components. In some embodiments, flash drive 800 includessecurity IC 225, which is coupled to interface/storage controller 830,and can communicate using Peripheral Protocol commands.

In the embodiment of FIG. 8, first connector 205, second connector 210,flash memory 240, interface/storage controller 830, power switches 650and 655, fuse 660, TVS 665, USB switches 670 and 890, host detect logic875, USB power management 895, and resistors 680 and 685 are eachseparate components that are connected to a PCB (not shown), and the PCBelectrically connects the pins of the various components to enable thecomponents to communicate with each other. In various embodiments, anyof flash memory 240, interface/storage controller 830, power switches650 and 655, fuse 660, TVS 665, USB switches 670 and 890, host detectlogic 875, USB power management 895, and resistors 680 and 685 can beintegrated to create one or more components that integrate thefunctionality of these components, or can be sub-divided to createmultiple components that, combined, include the functionality of one ormore of these components. Further, these components can be connected tomultiple PCBs, with the multiple PCBs coupled together via wires or byanother mechanism that enables the components to communicate with eachother.

Flash drive 800 functions similar to flash drive 700. Flash drive 800includes USB power management 895, which does not appear in theillustration of FIG. 7, and which is a power managementmodule/component. Returning once again to the example of FIG. 1, flashdrive 800 can be flash drive 110, lightning connector 130 can be firstconnector 205, and USB connector 125 can be second connector 210. Usingthe example of FIG. 1, user 105 can plug second connector 210 into theUSB port of laptop 115. Once connected, a power pin of second connector210 is electrically connected to the 5.5V power supply of laptop 115,and the power pin transmits the 5.5V to host detect logic 875.

At this point, no device is connected to first connector 205, and thepower pins of first connector 205 are unconnected. Host detect logic 875determines which device of devices that are connected to flash drive800, via first connector 205 or second connector 210, is the host deviceto which flash drive 800 communicates. In some embodiments, the hostdevice is a USB host, and flash drive 800 sends a message or signal tothe host device to establish the host device as the USB host. Subsequentcommunications between the host device and flash drive 800 can be basedon flash drive 800 being established as the USB host.

An output of host detect logic 875 controls USB switch 670 and USBswitch 890 to enable the host device to communicate with USB powermanagement 895 during enumeration, and to enable the host device tocommunicate with interface/storage controller 830 at other times. Asecond output, to identify which device is the host and whether thereare one or two devices connected to flash drive 800, is coupled tostorage/interface controller 830. Host detect logic 875 can use any ofthe various algorithms/mechanisms described above related to host detectlogic 675 to determine which device is the host.

In the example of FIG. 8, host detect logic 875 determines the hostbased on a prioritization of the connectors, where a device connected tofirst connector 205 is determined to be the host when devices areconnected to both first and second connectors 205 and 210. Host detectlogic 875 detects that the 5.5V power pin from second connector 210 isactive, and that the 3.3V power pin from first connector 205 isinactive. Based on this, host detect logic 875 determines that thedevice connected to second connector 210, which is laptop 115, is thehost, and that there is only one device connected to flash drive 800.

As flash drive 800 powers up, the components go through a resetsequence, which initializes the components and begins the execution ofan application program that is stored in flash memory 240 to effectively“boot” the flash drive into a ready state. Related to this “boot”process, an enumeration process is initiated where flash drive 800 andlaptop 115 communicate to identify device type. During the enumerationprocess, flash drive 800 and laptop 115 communicate to determine anallowable amount of power for flash drive 800 to draw from the USB portof laptop 115. This power-related communication is handled by USB powermanagement 895.

During these power-related communications, the output of host detectlogic 875 that controls USB switches 670 and 890 is set to a value thatenables the host to communicate with USB power management 895. USB powermanagement 895 communicates with the host to determine an allowableamount of power that flash drive 800 can pull from the USB connector ofthe host. Flash drive 800 then limits its power draw accordingly.Limiting its power draw can include flash drive 800 limiting the powerdraw of a second device that is also connected to the flash drive. Forexample, flash drive 800 can determine that laptop 115 can provide tenwatts, and can determine that smartphone 120 can draw either five wattsor ten watts. Further, flash drive 800 consumer one watt of power. Ifflash drive 800 enables smartphone 120 to draw ten watts, then the powerbeing drawn from the USB port of laptop 115 will be eleven watts, whichexceeds the ten watt limit. So flash drive 800 communicates withsmartphone 120 to limit the power consumption of smartphone 120 to fivewatts.

After USB power management 895 has completed its communications with thehost device, then the output of host detect logic 875 that controls USBswitches 670 and 890 is set to enable the host to communicate withinterface/storage controller 830. From this point on, flash drive 800functions similar to flash drive 700 until a new device is connected toflash drive 800. Once a new device is connected and an enumerationprocess starts with the newly connected device, host detect logic 875once again sets its output to enable USB power management 895 to connectto the newly connected device during enumeration. Once thesecommunications are completed, host detect logic 875 once again sets itsoutput to enable the host, which may have changed e.g. from laptop 115to smartphone 120, to communicate with interface/storage controller 830.From this point on, flash drive 800 once again functions similar toflash drive 700, until yet another new device is connected to flashdrive 700, and another enumeration process begins.

FIG. 9 is an activity diagram illustrating the use of a flash drive topass current from a source device to a mobile device, consistent withvarious embodiments. Source device 905 is a computing device with afirst connector, such as laptop 115 where the first connector is a USBport, and mobile device 910 is a computing device with a secondconnector, such as smartphone 120 where the second connector is aLightning port. While this diagram illustrates using flash drive 800 tocopy data from source device 905 to mobile device 910, data cansimilarly be copied from mobile device 910 to source device 905 usingflash drive 800.

Source device 905 can be any type of computing device that includes aconnector, such as a USB port, that can provide power. Source device 905can also be a power adapter, which is not a computing device, but ratheris a device whose primary purpose is to provide power. However, whensource device 905 is a power adapter and is not a computing device,steps 914, 916, 922, and 924 are not possible, and, in some embodiments,step 913 is not possible either. Mobile device 910, as well as any othermobile device discussed herein, can be any type of mobile device, suchas a laptop computer, a tablet computer, a cell phone, a smart phone, awearable device, etc.

A user, such as user 105, plugs a connector of flash drive 800, such asa male USB connector, into a compatible connector of source device 905,such as a female USB connector. After being plugged in, flash drive 800powers up and goes through a reset sequence where it initializes to aready state. In some embodiments, during the initialization processflash drive 800 reads and executes software from flash memory 240. Forexample, after going through the reset sequence, interface/storagecontroller 830 reads data from flash memory 240. The data can besoftware to be executed interface/storage controller 830. The softwarecan be executed to put flash drive 800 into a ready state.

Once flash drive 800 is in the ready state, either flash drive 800 orsource device 905 can initiate communication between the two devices. Inresponse to being plugged into the USB connector of source device 905and effectively “booting” to the ready state, flash drive 800 candetermine a protocol to use to send a message to source device 905 toinitiate communication between the devices (step 918). For example,flash drive 800 can determine, based on being plugged into a USBconnector, to send a USB command or message to source device 905 toinitiate communication (step 920). In response to receiving the USBcommand or message, source device 905 can send a response to establishcommunication between the devices (step 912). In some embodiments orcases, source device 905 can send the message to initiate communicationto flash drive 800, and flash drive 800 can send a response to establishcommunication.

Some peripheral interface standards, such as USB (per, for example, theUSB power delivery specification), allow connector ports to provide arange of power levels, and also allow connector ports to draw a range ofpower levels. For example, a USB port of a first device may allow only100 milliamps (ma) to be drawn by a connected device, while a USB portof a second device may allow 500 ma to be drawn by a connected device.In some cases the power to be drawn can be negotiated. For example,while the USB port of the first device only allows 100 ma to be drawninitially, it may be possible to negotiate with the first device to havethe first device increase the current that the USB port can provide.Similarly, a USB port of a first device may draw 100 ma by default, andmay be able to increase its current draw.

For example, a USB port of a first device that can source power isconnected to a micro-USB port of a second device that needs to rechargeits battery. The two devices can exchange power information, such asduring enumeration. The USB port of the first device may initially beset to provide 100 ma. During enumeration, the second device maydetermine that the USB port of the first device can be set to providemore power, and may request that the first device provide more power,for example, raising the current to be provided from 100 ma to 500 ma.Similarly, the USB port of the second device initially be set to draw100 ma. Based on determining that the source USB port can provide 500ma, the second device may raise the current consumption of its micro-USBport from 100 ma to 500 ma.

Even if flash drive 800 consumes an amount of power that is so smallthat it will not exceed any power limit of any USB port, because flashdrive 800 can pass current from one connected device to a secondconnected device, flash drive 800 needs to know how much power theconnector port of source device 905 can provide. Flash drive 800 needsto know this so that it can ensure that the combined power draw of flashdrive 800, and of a second device that may be connected to flash drive800 at some point in the future, will not exceed the power supplycapability of source device 905. So flash drive 800 sends a message tosource device 905 to determine an allowable amount of power that can bedrawn from the USB connector (step 921). Source device 905 sends aresponse that indicates an allowable amount of power (step 913). Forexample, source device 905 may send a response that indicates that itcan provide only one power level. In some embodiments, source device 905may send a response that indicates that the USB connector port can beset to provide multiple difference power levels. In these embodiments,flash drive 800 can communicate with source device 905 to cause sourcedevice 905 to set the power level of the USB connector port to a desiredlevel.

At some point in time, user 105 indicates that he wants to copy data,such as a movie, from source device 905 to flash drive 800. For example,user 105 can utilize a user interface of a source device, such aswindows explorer of laptop 115, to indicate to copy the movie to flashdrive 800 (step 914). Source device 905 can send the movie to flashdrive 800 using the USB protocol and USB protocol commands (step 916).Flash drive 800 receives the commands at interface/storage controller830, where the USB commands are interpreted. Based on the received USBcommands, interface/storage controller 830 determines to write the moviedata to flash memory 240 (step 922), and manages the writing of the datato flash memory 240 (step 924).

At a later point in time, user 105 plugs a connector of flash drive 800,such as a male Lightning connector, into a compatible connector ofmobile device 910, such as a female Lightning connector. After beingplugged in, host detect logic 875 of flash drive 800 determines thatflash drive 800 is connected to two devices, and determines to changethe host from source device 905 to mobile device 910. Flash drive 800sends a message to mobile device 910 to initiate communication (step928). Mobile device 910 responds to establish communication with flashdrive 800 (step 938).

As discussed above, flash drive 800 needs to ensure that its currentdraw from the USB port of source device 905 does not exceed an allowablelevel. Flash drive 800 sends a message to determine a range of powerconsumption levels to mobile device 910 (step 930). Mobile device 910sends a response indicating the range of power consumption levels (step939). In some cases, the range may be a single value. In other cases,the range may be multiple discreet levels. Flash drive 800 earlierdetermined an allowable amount of power that can be drawn from the USBport of source device 905. Flash drive 800 also knows how much power itconsumes. Based on this, and based on the indicated range of powerconsumption levels of mobile device 910, flash drive 800 determines apower consumption level for mobile device 910 (step 932). Flash drive800 sends a message to mobile device 910 to set the power consumptionlevel that mobile device 910 will draw from flash drive 800 via theconnector (step 932). Mobile device 910 sends a message to cause thepower consumption level smartphone 120 to be set to an appropriate level(step 940). Flash drive 800 enables power to flow from source device 905to mobile device 910, such as by controlling power switch 655 to enablepower to flow between the two devices. Mobile device 910 draws powerthat is less than or equal to the defined power consumption level (step941).

At a later point in time, user 105 indicates that he wants to copy orstream the movie from flash drive 800 to mobile device 910. For example,user 105 utilizes a user interface of an OS that is running on mobiledevice 910 to indicate to copy or stream the movie from flash drive 800to mobile device 910 (step 942). In response to the indication to copyor stream the movie, mobile device 910 sends a request for the movie toflash drive 800 (step 944). For example, mobile device 910 sends a USBcommand requesting the movie data to flash drive 800, where the commandis directed to interface/storage controller 830, where the USB commandis interpreted. Based on the received USB command, interface/storagecontroller 830 determines to read the movie data from flash memory 240(step 934). Interface/storage controller 830 further manages the readingof the movie data from flash memory 240. After reading the movie datafrom flash memory 240, interface/storage controller 830 sends or streamsthe data to mobile device 910 (step 936), where the data is received(step 946).

During observations of people using smart phones and other mobiledevices, observers noted that, when holding their smart phonesvertically in their hand, people often held their phones between thebase of their fingertips and the inner side of the hand. When holding asmart phone in this way, it was further noticed that many smart phoneusers would move their pinky finger to the bottom of the phone tostabilize it. When a user holds a smart phone in this way, and slideshis pinky finger to the bottom of the phone to stabilize the phone, itwas noticed that an empty space is created between the back of the phoneand the palm of the user's hand.

FIG. 10 is a diagram illustrating a space that is formed between smartphone 1005 and a user's hand when the user holds smart phone 1005,consistent with various embodiments. Smart phone 1005 is an Apple iPhonethat has a Lightning connector port on the bottom edge of the phone.Observers, while developing the technology, observed people using theirsmart phones and other mobile devices. The observers noticed that, whenholding their mobile devices vertically in their hand, people often holdtheir phones between the base of their fingertips and the inner side ofthe hand. FIGS. 10 and 11 illustrate, respectively, a bottom-view and afront-view of a user holding smart phone 1005 between the base of hisfingertips and the inner side of his hand.

The observers further noticed that, when holding a smart phone in thisway, many people place their pinky finger at the bottom of the phone tostabilize the phone. FIGS. 10 and 11, respectively, illustrate abottom-view and a front-view of a user with his pinky placed at thebottom of smart phone 1005 to stabilize the phone. When a user holds asmart phone as depicted in FIGS. 10 and 11, the observers noticed thatan empty space is created between the back of the phone and the palm ofthe user's hand. FIG. 10 illustrates such an empty space formed betweenthe back of smart phone 1005 and the user's hand.

FIG. 12 is a diagram illustrating a flash drive that is shaped toutilize the space behind a mobile device, consistent with variousembodiments, and as viewed from three different angles. In theembodiment of FIG. 12, flash drive 1210 has a J-shape, and hasconnectors on both ends of the J-shape. Mobile connector 1215, which isan Apple Lightning connector in the embodiment of FIG. 12, extends fromfront portion 1225, which is the short end of the J-shape. Connector1220, which is a full size Universal Serial Bus (USB) connector in theembodiment of FIG. 12, extends from back portion 1230, which is the longend of the J-shape.

When mobile connector 1215 is connected to a mobile device, such assmart phone 1005, the flash drive wraps around the mobile device and islocated behind the mobile device, as is depicted in FIGS. 13-15. FIGS.13-15 are diagrams illustrating, respectively, a front-view, aside-view, and a back-view, of flash drive 1210 connected to smart phone1005, and utilizing the space behind the smart phone, consistent withvarious embodiments. While the flash drive of the embodiment of FIG. 12is a particular shape, other embodiments can include any flash driveshaped or configured to enable the flash drive to wrap around a mobiledevice when connected to the mobile device, such that a portion of theflash drive is located behind the mobile device when so connected.

The portion of the flash drive that is located behind the mobile devicecan be adjacent to the back surface of the mobile device, as is depictedin FIGS. 14 and 15. When a user holds smart phone 1005, and flash drive1210 is connected to the smart phone as depicted in FIGS. 13-15,connector 1220 and a part of back portion 1230 of flash drive 1210 canfit in the empty space between the user's hand and the back of smartphone 1210, as is depicted in FIGS. 16 and 17. FIGS. 16 and 17 arediagrams illustrating, respectively, a bottom-view and a front-view offlash drive 1210 utilizing the space between smart phone 1005 and auser's hand, consistent with various embodiments.

Further, when a mobile device is placed in a protective case such that asurface of the case covers the back surface of the mobile device, theportion of the flash drive that is located behind the mobile device (andbehind the surface of the case) can be adjacent to the back surface ofthe mobile device. This is because a first object that is placedadjacent to a second object that is placed adjacent to a third objectis, as used herein, adjacent to the third object. Therefore, a portionof a flash drive that is adjacent to a surface of a case that isadjacent to a back surface of a mobile device is, by definition herein,adjacent to the back surface of the mobile device.

In some embodiments, the body of the flash drive has three portions, afront portion, an intermediate portion, and a back portion. The frontportion extends from the intermediate portion in a first direction, andhas a mobile device connector extending from the end of the frontportion. For example, the intermediate portion of flash drive 1210 canbe U-shaped intermediate portion 1235, and the front portion can befront portion 1225. In various embodiments, the intermediate portion canbe a rectilinear U-shape, a J-shape, or a V-shape, among others. Arectilinear U-shape is a U-shape that is formed of three rectangularpieces. The mobile device connector can be mobile connector 1215. Themobile device connector enables the flash drive to connect to andcommunicate with a mobile device. Examples of mobile devices include asmart phone, a tablet computer, a portable music device, etc.

The back portion of the body extends from the intermediate portion in asecond direction, and has a device connector extending from the end ofthe back portion. The back portion of flash drive 1210 can be backportion 1230, and the device connector can be connector 1220. In someembodiments, the back portion of the body of the flash drive extendsfurther from the intermediate portion in the first direction than thefront portion extends from the intermediate portion in the seconddirection. In other embodiments, the back portion of the body of theflash drive extends further from the intermediate portion in the firstdirection than the front portion extends from the intermediate portionin the first direction. In yet other embodiments, the back portion ofthe body of the flash drive extends further from the intermediateportion in the first direction than the front portion extends from theintermediate portion in the first direction by more than a factor oftwo.

The first direction and the second direction can be substantiallyparallel, or the two directions can have an angle between them of up to45 degrees. The preferred angle between the two directions is betweenzero degrees and approximately 20 degrees. When the angle between thetwo directions exceeds approximately 20 degrees, flash drives withlonger back portions begin to have trouble fitting in the empty space,the empty space as depicted in FIG. 10, between the smart phone and thehand of a user holding the smart phone. As the angle between the twodirections increases, the back portion needs to decrease in length inorder to fit in this empty space. At angles above approximately 45degrees, the flash drive is no longer able to reasonably utilize thisempty space.

In some embodiments, the intermediate portion of the body is configuredor shaped to cause, when the mobile connector is connected to a mobiledevice in a first orientation, a portion of the back portion of themobile device, as well as the device connector, to be located behind themobile device. FIG. 14 contains an example of a flash drive, flash drive1210, with a portion of the back portion of the flash drive, portion1440, as well as a device connector, connector 1220, located behind, andalso adjacent to, the mobile device. FIG. 15 also contains an example offlash drive 1210 with a portion of the back portion of the flash drive,as well as a device connector, located behind, and also adjacent to, themobile device. In some embodiments, the mobile connector of the flashdrive can be inserted into the mobile connector port of the mobiledevice with a second orientation. For example, a Lightning connector canbe inserted into a Lightning connector port in a first orientation, andalso in a second orientation where the Lightning connector is rotated by180 degrees. In such a case, when the flash drive is connected to themobile device in the second orientation, the back portion of the mobiledevice, as well as the device connector, can be located in front of themobile device and adjacent to a front surface of the mobile device.

In some embodiments, such as the embodiment of FIG. 18, the flash drivehas only one connector, a mobile connector. FIG. 18 is a diagramillustrating a flash drive with one connector that is shaped to utilizethe space behind a mobile device, consistent with various embodiments,and as viewed from two different angles. The flash drive of FIG. 18,flash drive 1810, has one connector, connector 1815. In embodimentswhere the flash drive has only one connector, the back portion of theflash drive, such as back portion 1830, does not have a connector. Insome of these embodiments, the intermediate portion of the body, such asU-shaped intermediate portion 1835, is configured or shaped to cause,when the mobile connector is connected to a mobile device in a firstorientation, a portion of the back portion of the flash drive to belocated behind the mobile device. The portion of the back portion thatcan be located behind the mobile device can be a majority of the backportion.

Mobile connector 1215 is a connector that is configured to connect toand communicated with a mobile device. Examples of mobile deviceconnectors include an Apple Lightning connector, an Apple 30-pinconnector, an Apple Thunderbolt connector, a mini USB connector, a miniUSB A-type connector, a mini USB B-type connector, a micro USBconnector, a micro USB A-type connector, a micro USB B-type connector,and a UC-E6 connector. Connector 1220 is a connector that is configuredto connect to and communicate with a device. Examples of deviceconnectors include a full size USB connector, a standard USB connector,a standard A-type USB connector, a B-type USB connector, a mini USBconnector, a mini USB A-type connector, a mini USB B-type connector, amicro USB connector, a micro USB A-type connector, a micro USB B-typeconnector, a UC-E6 connector, an Apple Lightning connector, an Apple30-pin connector, and an Apple Thunderbolt connector.

FIG. 19 is a diagram illustrating a flash drive that can bend toaccommodate mobile devices of varying thicknesses, consistent withvarious embodiments. Different mobile devices may have differentthicknesses. For example, an Apple iPod Touch may be 6.1 mm thick, whilean Apple 5C iPhone may be 8.9 mm thick. In some embodiments, in order toaccommodate mobile devices of varying thicknesses, the intermediateportion of the flash drive can be configured to cause a specificseparation distance between the front and back portions of the flashdrive. This configuration creates a gap between the front and backportions of the flash drive sufficient to enable the flash drive to wraparound the thickest target mobile device when connected to the thickesttarget mobile device.

A distance between a front portion of a flash drive, such as frontportion 1225, and a back portion of the flash drive, such as backportion 1230, can be defined at a number of locations. In someembodiments, an imaginary line or plane can be utilized to define afirst distance. For example, in FIG. 12 the side-view shows a dashedline, line 1265, that is defined by a first point along a plane wherefront portion 1225 joins with U-shaped intermediate portion 1235, and asecond point along a plane where back portion 1230 joins with U-shapedintermediate portion 1235. Line 1265 can also be part of a plane thatcan be defined by choosing a third point that lies on one of these twoplanes.

A first distance, such as first distance 1250, can be defined as thedistance between two points. The first point is a point on an insidesurface of the front portion of the flash drive, such as front portion1225, that is also on the above discussed line or plane, such as line1265. The second point is a point on an inside surface of the backportion of the flash drive, such as back portion 1230, that is also onthis line or plane. The first distance can be the distance between thefirst point and the second point. For example, for flash drive 1210, thefirst distance is first distance 1250.

In some embodiments, the front portion transitions to the intermediateportion along one of the two above discussed planes, which can besubstantially perpendicular to a line in the first direction. The backportion transitions to the intermediate portion, along the other one ofthe two above discussed planes, which can be substantially perpendicularto a line in the second direction. In some embodiments, the two abovediscussed planes are coplanar, and the two planes can be substantiallyperpendicular to the a line in the first direction and/or a line in thesecond direction.

In order to enable the flash drive to accommodate a variety ofthicknesses of mobile devices, it was determined based on an analysis ofa variety of mobile devices of varying thicknesses that a range ofpractical first distances is between approximately 3 mm andapproximately 7 mm, with a preferred first distance of 5.5 mm. In someembodiments, the intermediate portion of the flash drive, such asU-shaped intermediate portion 1235, can be shaped or configured to causea specific first distance, such as a first distance that is in the rangeof practical first distances. For example, U-shaped intermediate portion1235 can be shaped or configured so that first distance 1250 is between3 mm and 7 mm.

The inside surface of the back portion of the flash drive is the surfaceof the back portion of the flash drive that is closest to the mobiledevice, when the flash drive is connected to the mobile device asdepicted in FIG. 14. The inside surface of the front portion of theflash drive is the surface of the front portion of the flash drive thatis closest to the inside surface of the back surface of the flash drive.

A second distance, such as second distance 1255, can be defined at thedistance between two points. A third point can be a point on a centerline of the mobile connector, such as a point on center line 1260 ofmobile connector 1215. The point can also or alternatively by a point ona plane that bisects the mobile connector, and that contains the centerline. For example, the plane can be the plane that contains center line1260, and that is perpendicular to the plane of the paper of FIG. 12. Afourth point can be the point on the inside surface of the back portionof the flash drive that is closest to the third point. The seconddistance can be the distance between the third point and the fourthpoint. For example, for flash drive 1210, the second distance is seconddistance 1255

In order to enable the flash drive to accommodate a variety ofthicknesses of mobile devices, it was determined based on an analysis ofa variety of mobile devices of varying thicknesses that a range ofpractical second distances is between approximately 3 mm andapproximately 7 mm, with a preferred second distance of 5.5 mm. In someembodiments, the intermediate portion of the flash drive, such asU-shaped intermediate portion 1235, can be shaped or configured to causea specific second distance, such as a second distance that is in therange of practical second distances. For example, U-shaped intermediateportion 1235 can be shaped or configured so that second distance 1255 isbetween 3 mm and 7 mm.

In some embodiments, a portion of the flash drive is made of flexiblematerial to enable the front and back portions of the flash drive to bebent apart. For example, a portion of U-shaped intermediate portion 1235can be made of a flexible material to enables U-shaped intermediateportion 1235 to be bent to increase or reduce the first distance and/orthe second distance, as depicted in FIG. 19. As used herein, a portionof some object or material can be the entirety of the object ormaterial. This enables a flash drive that can be bent to accommodatemobile devices of varying thicknesses. The back portion of someembodiments of the flash drive can fit snugly against the back of amobile device when the flash drive is connected to the mobile device.The flash drive can also fit a thicker mobile device as well. By bendingthe flash drive to increase the first distance and/or the seconddistance, the flash drive can wrap around a thicker mobile device toutilize space behind the mobile device.

Analysis and experiments have determined that materials with a Shore Ahardness durometer of between 70 and 95, such as some elastomericpolymers, have sufficient flexibility for use in the flash drive, andthat 85 is a preferred Shore A hardness durometer. When the intermediateportion, such as U-shaped intermediate portion 1235, is made of amaterial with a Shore A durometer of between 70 and 95, the intermediateportion can flex and bend sufficiently to enable the flash drive toaccommodate an adequate range of thicknesses of mobile devices. Amaterial with a Shore A durometer of 85 was determined to be a goodtrade-off between having the flash drive bend easily enough to fit onmobile devices of a variety of thicknesses, and yet still be stiffenough to provide to give the user feedback (though the stiffness thatthe user can feels) that the flash drive should not be bent too far.Analysis of various materials have determined a number of materials,such as elastomeric polymers, that are adequate for use in the flexibleportion of the flash drive. These materials include thermoplasticpolyurethane (TPU), polypropylene, thermoplastic elastomer (TPE), andsilicone, with TPU being the preferred material.

FIG. 20 is a diagram illustrating an exploded view of a flash drive,including a cap, that is shaped to utilize the space behind a mobiledevice, consistent with various embodiments. In various embodiments,flash drive 2000 can be flash drive 110, or flash drive 1210, or can bedifferent. Flash drive 2000 includes PCB 2005, inner mold 2010, shroud2015, overmold 2020, extrusions 2025 and 2030, cap 2035, and lightpipe2040. PCB 2005 includes a PCB, a flash memory IC, a controller, a USBconnector, a Lightning connector, and wires that couple the Lightningconnector to the PCB, among other components. The PCB and the wirescouple the various components of PCB 2000. In various embodiments, PCB2005 can include the components depicted in any of FIG. 2, FIG. 3, FIG.4, FIG. 6, FIG. 7, or FIG. 8.

Inner mold 2010 is part of the intermediate portion of flash drive 2000.Inner mold 2010 is formed over a portion of PCB 2005. The portion of PCB2005 over which inner mold 2010 is formed includes a portion of theLightning connector, the wires between the Lightning connector and thePCB, and a portion of the PCB. In one embodiment, inner mold 2010 isformed over 2 mm of the end of the PCB. Inner mold 2010 can be made ofmaterial with a Shore A durometer of between 70 and 95. Inner mold 2010can be made of any of TPU, polypropylene, TPE, or silicone, amongothers. To form inner mold 2010, a mold in the desired shape is created.The portion of PCB 2005 to be covered by inner mold 2010 is placedinside of the mold, and an overmold process, also referred to as aninsertion molding process, is used. The overmold material is injected inthe form, and is allowed to cure and harden to form inner mold 2010.Inner mold 2010 is preferably formed of TPU with a Shore A durometer of85.

In order to help inner mold 2010 stay attached to the PCB of PCB 2005,in some embodiments, two holes are cut in the end of the PCB over whichinner mold 2010 will be formed. When the TPU is injected into the mold,the TPU flows into the two holes. After curing, the hardened TPU thatformed in these two holes enables inner mold 2010 to stay firmlyattached to the PCB.

Lightpipe 2040 is formed of a material that conducts light. Lightpipe2040 is inserted in shroud 2015, and shroud 2015 is slid over PCB 2005.Shroud 2015 can be made of acrylonitrile butadiene styrene (ABS), amongother materials. Placing shroud 2015 over PCB 2005 serves severalpurposes. For example, an overmold is formed over PCB 2005 in a latermanufacturing step, and shroud 2015 protects the PCB and its componentsfrom the overmold. Further, while inner mold 2010 is attached to PCB2005, the connection may not have the mechanical strength needed to stayattached, given the stresses that are created when flash drive 2000 isbent to fit around a thick mobile device. Inner mold 2010 has a narrowedend. Shroud 2015 slides over PCB 2005, and also slides over the narrowedend of inner mold 2010.

With this configuration, when flash drive 2000 is bent, the portion ofthe shroud that encapsulates the narrow end of inner mold 2010 alsohelps to mechanically support inner mold 2010 when the forces thatresult from bending occur. Rather than inner mold 2010 potentiallybreaking off of the end of PCB 2005 due to the forces generated by thebend, some of these forces are transferred to shroud 2015, whichtransfers the forces further down PCB 2005. Once shroud 2015 is properlypositioned over/around PCB 2005, lightpipe 2040 is positioned over anLED on the PCB. Positioned thusly, lightpipe 2040 can pass light fromthe LED to the outside of flash drive 2000, where the light can be seenby a user.

Overmold 2020 is formed over PCB 2005, inner mold 2010, and shroud 2015(which is positioned over/around a portion of PCB 2005). Overmold 2020can be made of ABS, TPU, polypropylene, TPE, or silicone, among others.To form overmold 2020, a mold in the desired shape is created. Theportion of PCB 2005, inner mold 2010, and shroud 2015 to be covered byovermold 2020 is placed inside of the mold, and an overmold process isused to create overmold 2020. The overmold material is injected in theform, and is allowed to cure and harden to form overmold 2020. Overmold2020 is preferably formed of ABS.

In some embodiments, extrusions 2025 and 2030 are metal extrusions, suchas aluminum extrusions. When overmold 2020 is formed, it does notentirely encapsulate inner mold 2010 or shroud 2015. One end of overmold2020 is formed pulled back a distance from an end of inner mold 2010.The other end of overmold 2020 is formed pulled back another distancefrom an end of shroud 2015. Extrusion 2030 slides over the end of innermold 2010 that is nearest to the Lightning connector, where extrusion2030 abuts against one end of overmold 2020. Extrusion 2025 slides overthe end of shroud 2015 that is nearest to the USB connector, whereextrusion 2025 abuts against a second end of overmold 2020. Glue is usedto attach the two extrusions to flash drive 2000.

Cap 2035 is a J-shaped cap that can be placed over the two connectors toprotect the connectors. Can 2035 can be made of ABS, TPU, polypropylene,TPE, or silicone, among other materials. Cap 2035 has a hole at each endthat is shaped to accommodate the connector that is to be inserted inthe hold. Cap 2035 has a hole at the middle of the curved portion of cap2035. This hole can be used to, for example, attach cap 2035 to a keyring. When flash drive 2000 is inserted in cap 2035, cap 2035 snuglyholds flash drive 2000.

FIG. 21 is a block diagram illustrating an example of a processingsystem in which at least some operations described herein can beimplemented, consistent with various embodiments. Processing device 2100can represent any of the computing devices described above, e.g., laptop115, smartphone 120, non-iOS computing device 505, iOS computing device510, source device 905, mobile device 910, or smart phone 1005. Any ofthese systems can include two or more processing devices, as isrepresented in FIG. 21, which can be coupled to each other via a networkor multiple networks.

In the illustrated embodiment, the processing system 2100 includes oneor more processors 2110, memory 2111, a communication device 2112, andone or more input/output (I/O) devices 2113, all coupled to each otherthrough an interconnect 2114. The interconnect 2114 may be or includeone or more conductive traces, buses, point-to-point connections,controllers, adapters and/or other conventional connection devices. Theprocessor(s) 2110 may be or include, for example, one or moregeneral-purpose programmable microprocessors, microcontrollers,application specific integrated circuits (ASICs), programmable gatearrays, or the like, or any combination of such devices. Theprocessor(s) 2110 control the overall operation of the processing device2100. Memory 2111 may be or include one or more physical storagedevices, which may be in the form of random access memory (RAM),read-only memory (ROM) (which may be erasable and programmable), flashmemory, miniature hard disk drive, or other suitable type of storagedevice, or any combination of such devices. Memory 2111 may store dataand instructions that configure the processor(s) 2110 to executeoperations in accordance with the techniques described above. Thecommunication device 2112 may be or include, for example, an Ethernetadapter, cable modem, Wi-Fi adapter, cellular transceiver, Bluetoothtransceiver, or the like, or any combination thereof. Depending on thespecific nature and purpose of the processing device 2100, the I/Odevices 2113 can include various devices, e.g., a display (which may bea touch screen display), audio speaker, keyboard, mouse or otherpointing device, microphone, camera, etc.

Unless contrary to physical possibility, it is envisioned that (i) themethods/steps described above may be performed in any sequence and/or inany combination, and that (ii) the components of respective embodimentsmay be combined in any manner.

The techniques introduced above can be implemented by programmablecircuitry programmed/configured by software and/or firmware, or entirelyby special-purpose circuitry, or by any combination of such forms. Suchspecial-purpose circuitry (if any) can be in the form of, for example,one or more application-specific integrated circuits (ASICs),programmable logic devices (PLDs), field-programmable gate arrays(FPGAs), etc.

Software or firmware to implement the techniques introduced here may bestored on a machine-readable storage medium and may be executed by oneor more general-purpose or special-purpose programmable microprocessors.A “machine-readable medium”, as the term is used herein, includes anymechanism that can store information in a form accessible by a machine(a machine may be, for example, a computer, network device, cellularphone, personal digital assistant (PDA), manufacturing tool, any devicewith one or more processors, etc.). For example, a machine-accessiblemedium includes recordable/non-recordable media (e.g., read-only memory(ROM); random access memory (RAM); magnetic disk storage media; opticalstorage media; flash memory devices; etc.), etc.

Note that any and all of the embodiments described above can be combinedwith each other, except to the extent that it may be stated otherwiseabove or to the extent that any such embodiments might be mutuallyexclusive in function and/or structure.

Although the present invention has been described with reference tospecific exemplary embodiments, it will be recognized that the inventionis not limited to the embodiments described, but can be practiced withmodification and alteration within the spirit and scope of the appendedclaims. Accordingly, the specification and drawings are to be regardedin an illustrative sense rather than a restrictive sense.

The invention claimed is:
 1. A flash drive configured to pass currentfrom a source device to a mobile device to charge a battery of themobile device, the flash drive comprising: a printed circuit board(PCB); a flash memory integrated circuit (IC); a first connector toconnect to and communicate with the source device; a second connector toconnect to and communicate with the mobile device; a power switch; and acontrol module that is a) coupled the flash memory IC, the PCB, thepower switch, the first connector, and the second connector, b)configured to enable a first data received via the first connector i) tobe written to the flash memory IC, ii) to be read from the flash memoryIC and sent to the source device via the first connector or to themobile device via the second connector, and iii) to be erased from theflash memory IC, c) configured to enable a second data received via thesecond connector i) to be written to the flash memory IC, ii) to be readfrom the flash memory IC and sent to the source device via the firstconnector or to the mobile device via the second connector, and iii) tobe erased from the flash memory IC, d) configured to control the powerswitch to enable the power switch to pass the current from the sourcedevice to the mobile device to charge the battery of the mobile device,e) configured to, in response to the second connector being plugged intoa connector of the mobile device, determine a protocol to use to send amessage to the mobile device, f) configured to, when the mobile deviceis an iphone operating system (iOS) computing device, send the messageto the mobile device using a peripheral protocol that includes a set ofcommands that enables the flash drive to communicate with a plurality ofiOS computing devices, g) configured to read file system software fromthe flash memory IC, and to send the file system software to the mobiledevice to enable the mobile device to use the file system software tosend data to and receive data from the flash drive, and h) configured tosend data to the mobile device that enables the mobile device to set apower consumption level that limits the current passed from the sourcedevice to the mobile device.
 2. The flash drive of claim 1, wherein thecontrol module is further configured to enable a movie to be copied fromthe source device via the first connector and streamed to the mobiledevice via the second connector.
 3. The flash drive of claim 2, whereincontrol module is further configured to enable the movie that is copiedfrom the source device to be stored in the flash memory IC, and toenable the streaming of the movie to the mobile device to includereading the movie from the flash memory IC.
 4. The flash drive of claim2, wherein the control module is further configured to stream the movieusing Small Computer System Interface (SCSI) commands.
 5. The flashdrive of claim 1, further comprising: a data switch coupled to thecontrol module, the first connector, and the second connector; and alogic module, wherein the logic module is configured to control the dataswitch to enable a) the first data to be written to the flash memory IC,and, after being read from the flash memory IC, to be sent to the sourcedevice via the first connector or to the mobile device via the secondconnector, and b) the second data to be written to the flash memory IC,and, after being read from the flash memory IC, to be sent to the sourcedevice via the first connector or to the mobile device via the secondconnector.
 6. A flash drive comprising: a printed circuit board (PCB); aflash memory integrated circuit (IC); a first standard interfaceconnector; a second standard interface connector; a power switch; and acontrol module that is a) coupled to the flash memory IC, the PCB, thepower switch, the first connector, and the second connector, b)configured to enable a first data received via the first standardinterface connector i) to be written to the flash memory IC, ii) to beread from the flash memory IC and sent to a first device via the firststandard interface connector or to a second device via the secondstandard interface connector, and iii) to be erased from the flashmemory IC, c) configured to enable a second data received via the secondstandard interface connector i) to be written to the flash memory IC,ii) to be read from the flash memory IC and sent to the first device viathe first standard interface connector or to the second device via thesecond standard interface connector, and iii) to be erased from theflash memory IC, d) configured to control the power switch to enable thepower switch to pass current from the first device via the firststandard interface connector to the second device via the secondstandard interface connector, e) configured to, based on firstinformation received from the second device after the second standardinterface connector is plugged into a compatible connector of the seconddevice, determine a protocol to use to send a message to the seconddevice, and f) configured to communicate second information to thesecond device that enables the second device to set a power consumptionlevel that limits the current flow from the first device to the seconddevice.
 7. The flash drive of claim 6, wherein the control moduleincludes a plurality of sub-modules, wherein each of the sub-modules isrespectively included in an IC of a plurality of ICs, wherein each ofthe plurality of ICs is coupled to the PCB, and wherein each of theplurality of ICs includes at least one of the sub-modules.
 8. The flashdrive of claim 6, wherein the flash memory IC stores instructions which,when executed by the control module, cause the flash drive to performoperations including: receiving movie data from the first device via thefirst standard interface connector; storing the movie data at the flashmemory IC; in preparation to stream the movie data, reading the moviedata from the flash memory IC; and streaming the movie data to thesecond device via the second standard interface connector.
 9. The flashdrive of claim 6, wherein the control module is further configured toprevent detection of an error via a standard universal serial bus (USB)error detection mechanism, and to enable the detection of the error viafile system software stored at the flash drive.
 10. The flash drive ofclaim 6, wherein the first standard connector is one of a full size USBconnector, a standard USB connector, a standard A-type USB connector, aB-type USB connector, a mini USB connector, a mini USB A-type connector,a mini USB B-type connector, a micro USB connector, a micro USB A-typeconnector, a micro USB B-type connector, or a UC-E6 connector, andwherein the second standard interface connector is one of an AppleLightning connector, an Apple 30-pin connector, an Apple Thunderboltconnector, a mini USB connector, a mini USB A-type connector, a mini USBB-type connector, a micro USB connector, a micro USB A-type connector, amicro USB B-type connector, or a UC-E6 connector.
 11. The flash drive ofclaim 6, further comprising: a power management module that is coupledto the first and the second standard interface connectors, and that isconfigured to enable power to flow from the first device via the firststandard interface connector to the second device via the secondstandard interface connector.
 12. The flash drive of claim 11, whereinthe flash drive is configured to, based on information derived from thefirst device, determine how much current the first device can provide tothe flash drive.
 13. The flash drive of claim 11, wherein the flashdrive is configured to communicate with the second device to enable thesecond device to set a power draw limit that limits the power that flowsfrom the first device to the second device, wherein the power flows fromthe first device to the second device via electrical current that flowsfrom the first device to the second device.
 14. The flash drive of claim6, further comprising: a data switch that is coupled to the firststandard interface connector, the second standard interface connector,and the control module, wherein the control module is further configuredto determine whether to communicate with the first device or the seconddevice, and to control the data switch to enable the determinedcommunication.
 15. The flash drive of claim 6, wherein the controlmodule is further configured to prevent a first power supply of thefirst device, and a second power supply of the second device, fromelectrically interacting to damage any component of the flash drivecoupled to either the first or the second power supplies, or to damagethe first or the second power supplies.
 16. The flash drive of claim 6,wherein the control module is further configured a) to detect i) whenthe first device is coupled to the first standard interface connector,and ii) when the second device is coupled to the second standardinterface connector, and b) to determine whether to send data from theflash memory IC to the first or the second device based on an orderbetween i) the detection of the first device being coupled to the firstconnector, and ii) the detection of the second device being coupled tothe second connector.
 17. A method comprising: determining, by a flashdrive, a protocol to use to send a message to a first device based onfirst data received from the first device, wherein the first data isreceived via a first standard interface connector of the flash driveafter the first standard interface connector of the flash drive isplugged into a compatible connector of the first device; receiving, bythe flash drive, first transfer data from the first device via the firststandard interface connector; writing, by the flash drive, the firsttransfer data to a first block of memory in a flash memory integratedcircuit (IC) of the flash drive, wherein the first block includes thefirst transfer data; reading, by the flash drive, the first transferdata from the flash memory IC; sending, by the flash drive, the firsttransfer data to a second device via a second standard interfaceconnector that is connected to the second device; erasing, by the flashdrive, the first block of memory, wherein the first block of memoryincludes the first transfer data; sending, by the flash drive, a messagethat includes commands that are part of the protocol to the first deviceto enable the first device to set a power consumption level, wherein thepower consumption level indicates a limit of current flow from thesecond device to the first device; and sending, by the flash drive, asignal to a power switch of the flash drive to cause current to flowfrom the second device via the second standard interface connector tothe first device via the first standard interface connector.
 18. Themethod of claim 17, further comprising: sending a signal, by the flashdrive, to the second device to establish the second device as aUniversal Serial Bus (USB) host, wherein the receiving of the firsttransfer data is based on the second device being established as the USBhost.
 19. The method of claim 18, further comprising: sending a signal,by the flash drive, to the first device to establish the first device asthe USB host, wherein the sending of the first transfer data is based onthe first device being established as the USB host.
 20. The method ofclaim 17, further comprising: sending a signal to the second device todetermine a limit as to how much current the second device will provideto the flash drive.
 21. The method of claim 17, further comprising:sending a signal to the first device to cause the first device todetermine how much current the first device will receive from the flashdrive.